package com.tensai.study.java.utils;

import com.tensai.study.java.utils.functional.BranchHandle;
import com.tensai.study.java.utils.functional.PresentOrElseHandler;
import com.tensai.study.java.utils.functional.ThrowExceptionFunction;

import java.util.Objects;

/**
 * @author Tensai
 */
public class Utils {

	/**
	 * 如果参数为true抛出异常
	 *
	 * @param b 是否抛出异常
	 * @return ThrowExceptionFunction
	 */
	public static ThrowExceptionFunction isTure(boolean b) {
		return (errorMessage) -> {
			if (b) {
				throw new RuntimeException(errorMessage);
			}
		};
	}

	/**
	 * 参数为true或false时，分别进行不同的操作
	 *
	 * @param b 分支判断
	 * @return BranchHandle
	 **/
	public static BranchHandle isTureOrFalse(boolean b) {
		return (trueHandle, falseHandle) -> {
			if (b) {
				trueHandle.run();
			} else {
				falseHandle.run();
			}
		};
	}

	/**
	 * 参数为true或false时，分别进行不同的操作
	 *
	 * @param t 参数
	 * @return com.example.demo.func.BranchHandle
	 */
	public static <T> PresentOrElseHandler<T> isBlankOrNoBlank(T t) {

		return (consumer, runnable) -> {
			if (Objects.isNull(t)) {
				runnable.run();
			} else {
				consumer.accept(t);
			}
		};
	}
}
